home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Plus 1997 #3
/
Amiga Plus CD - 1997 - No. 03.iso
/
pd
/
programmierung
/
alienbreed3d2_src
/
cheesesauce
/
newloadfromdisk.s
< prev
next >
Wrap
Text File
|
1997-01-31
|
14KB
|
962 lines
******************************************************
ENDOFQUEUE: dc.l 0
INITQUEUE:
move.l #WorkSpace,ENDOFQUEUE
rts
QUEUEFILE:
; On entry:
; a0=Pointer to filename
; d0=Ptr to dest. of addr
; d1=ptr to dest. of len.
; typeofmem=type of memory
movem.l d0-d7/a0-a6,-(a7)
move.l ENDOFQUEUE,a1
move.l d0,(a1)+
move.l d1,(a1)+
move.l TYPEOFMEM,(a1)+
move.w #79,d0
.copyname:
move.b (a0)+,(a1)+
dbra d0,.copyname
add.l #100,ENDOFQUEUE
movem.l (a7)+,d0-d7/a0-a6
rts
FLUSHQUEUE:
bsr FLUSHPASS
tryagain
tst.b d6
beq .loadedall
* Find first unloaded file and prompt for disk.
move.l #WorkSpace,a2
.findfind:
tst.l (a2)
bne.s .foundunloaded
add.l #100,a2
bra.s .findfind
.foundunloaded:
* A2 points at an unloaded file thingy.
* Prompt for the disk.
move.l #VOLLINE,a3
move.l #$20202020,(a3)+
move.l #$20202020,(a3)+
move.l #$20202020,(a3)+
move.l #$20202020,(a3)+
move.l #$20202020,(a3)+
move.l #$20202020,(a3)+
move.l #$20202020,(a3)+
move.l #$20202020,(a3)+
move.l #$20202020,(a3)+
move.l #$20202020,(a3)+
move.l #VOLLINE,a3
; moveq #-1,d0
; move.l a2,a4
; add.l #12,a4
;.notfoundyet:
; addq #1,d0
; cmp.b #':',(a4)+
; bne.s .notfoundyet
;
; move.w d0,d1
; asr.w #1,d1
; sub.w d1,a3
;
move.l a2,a4
add.l #12,a4
move.w #79,d0
.putinvol:
move.b (a4)+,(a3)+
dbra d0,.putinvol
movem.l d0-d7/a0-a6,-(a7)
move.w #3,OptScrn
move.w #0,OPTNUM
bsr DRAWOPTSCRN
movem.l (a7)+,d0-d7/a0-a6
.wtrel:
btst #7,$bfe001
beq.s .wtrel
.wtclick:
btst #6,$bfe001
bne.s .wtclick
bsr FLUSHPASS
bra tryagain
.loadedall
rts
FLUSHPASS:
move.l #WorkSpace,a2
moveq #0,d7 ; loaded a file
moveq #0,d6 ; tried+failed
.flushit
move.l a2,d0
cmp.l ENDOFQUEUE,d0
bge.s FLUSHED
tst.l (a2)
beq.s .donethisone
lea 12(a2),a0 ; ptr to name
move.l 8(a2),TYPEOFMEM
jsr TRYTOOPEN
tst.l d0
beq.s .failtoload
move.l d0,handle
jsr DEFLOADFILE
st d7
move.l (a2),a3
move.l d0,(a3)
move.l 4(a2),d0
beq.s .nolenstore
move.l d0,a3
move.l d1,(a3)
.nolenstore:
move.l #0,(a2)
bra.s .donethisone
.failtoload
st d6
.donethisone:
add.l #100,a2
bra .flushit
FLUSHED:
rts
TRYTOOPEN:
movem.l d1-d7/a0-a6,-(a7)
move.l a0,d1
move.l doslib,a6
move.l #1005,d2
jsr -30(a6)
movem.l (a7)+,d1-d7/a0-a6
rts
***************************************************
SFX_NAMES:
dc.l ScreamName,4400
dc.l ShootName,7200
dc.l 0,0
; dc.l MunchName,5400
dc.l PooGunName,4600
dc.l CollectName,3400
;5
dc.l DoorNoiseName,8400
dc.l BassName,8000
dc.l StompName,4000
dc.l LowScreamName,8600
dc.l BaddieGunName,6200
;10
; dc.l 0,0
dc.l SwitchNoiseName,1200
dc.l ReloadName,4000
dc.l NoAmmoName,2200
dc.l SplotchName,3000
dc.l SplatPopName,5600
;15
dc.l BoomName,11600
dc.l HissName,7200
dc.l Howl1Name,7400
dc.l Howl2Name,9200
dc.l PantName,5000
;20
dc.l WhooshName,4000
dc.l ShotGunName,8800
; dc.l 0,0
dc.l FlameName,9000
dc.l MuffledName,1800
dc.l ClopName,3400
;25
dc.l ClankName,1600
dc.l TeleportName,11000
dc.l HALFWORMPAINNAME,8400
dc.l -1
ScreamName: dc.b 'AB3D2:sounds/scream',0
even
ShootName: dc.b 'AB3D2:sounds/fire!',0
even
*
*
PooGunName: dc.b 'AB3D2:sounds/shoot.dm',0
even
CollectName: dc.b 'AB3D2:sounds/collect',0
even
DoorNoiseName: dc.b 'AB3D2:sounds/newdoor',0
even
BassName: dc.b 'AB3D2:sounds/splash',0
even
StompName: dc.b 'AB3D2:sounds/footstep3',0
even
LowScreamName: dc.b 'AB3D2:sounds/lowscream',0
even
BaddieGunName: dc.b 'AB3D2:sounds/baddiegun',0
even
SwitchNoiseName:dc.b 'AB3D2:sounds/switch',0
even
ReloadName: dc.b 'AB3D2:sounds/switch1.sfx',0
even
NoAmmoName: dc.b 'AB3D2:sounds/noammo',0
even
SplotchName: dc.b 'AB3D2:sounds/splotch',0
even
SplatPopName: dc.b 'AB3D2:sounds/splatpop',0
even
BoomName: dc.b 'AB3D2:sounds/boom',0
even
HissName: dc.b 'AB3D2:sounds/newhiss',0
even
Howl1Name: dc.b 'AB3D2:sounds/howl1',0
even
Howl2Name: dc.b 'AB3D2:sounds/howl2',0
even
PantName: dc.b 'AB3D2:sounds/pant',0
even
WhooshName: dc.b 'AB3D2:sounds/whoosh',0
even
ShotGunName: dc.b 'AB3D2:sounds/shotgun',0
even
FlameName: dc.b 'AB3D2:sounds/flame',0
even
MuffledName: dc.b 'AB3D2:sounds/MuffledFoot',0
even
ClopName: dc.b 'AB3D2:sounds/footclop',0
even
ClankName: dc.b 'AB3D2:sounds/footclank',0
even
TeleportName: dc.b 'AB3D2:sounds/teleport',0
even
HALFWORMPAINNAME: dc.b 'AB3D2:sounds/HALFWORMPAIN',0
even
MunchName: dc.b 'AB3D2:sounds/munch',0
even
RoarName: dc.b 'AB3D2:sounds/bigscream',0
even
;-102
;7c
OBJNAME: ds.w 80
OBJ_NAMES:
dc.l wad1n
dc.l ptr1n
dc.l wad2n
dc.l ptr2n
; dc.l wad3n
; dc.l ptr3n
dc.l wad4n
dc.l ptr4n
dc.l wad5n
dc.l ptr5n
dc.l wad6n
dc.l ptr6n
dc.l wad7n
dc.l ptr7n
dc.l wad8n
dc.l ptr8n
dc.l wad9n
dc.l ptr9n
dc.l wadan
dc.l ptran
dc.l wadbn
dc.l ptrbn
dc.l wadcn
dc.l ptrcn
dc.l waddn
dc.l ptrdn
dc.l waden
dc.l ptren
dc.l wadfn
dc.l ptrfn
dc.l wadgn
dc.l ptrgn
dc.l -1,-1
wad1n:
dc.b 'AB3D1:includes/ALIEN2.wad',0
even
ptr1n:
dc.b 'AB3D1:includes/ALIEN2.ptr',0
even
wad2n:
dc.b 'AB3D1:includes/PICKUPS.wad',0
even
ptr2n:
dc.b 'AB3D1:includes/PICKUPS.ptr',0
even
wad3n:
dc.b 'AB3D1:includes/uglymonster.wad',0
even
ptr3n:
dc.b 'AB3D1:includes/uglymonster.ptr',0
even
wad4n:
dc.b 'AB3D1:includes/flyingalien.wad',0
even
ptr4n:
dc.b 'AB3D1:includes/flyingalien.ptr',0
even
wad5n:
dc.b 'AB3D1:includes/keys.wad',0
even
ptr5n:
dc.b 'AB3D1:includes/keys.ptr',0
even
wad6n:
dc.b 'AB3D1:includes/rockets.wad',0
even
ptr6n:
dc.b 'AB3D1:includes/rockets.ptr',0
even
wad7n:
dc.b 'AB3D1:includes/barrel.wad',0
even
ptr7n:
dc.b 'AB3D1:includes/barrel.ptr',0
even
wad8n:
dc.b 'AB3D1:includes/bigbullet.wad',0
even
ptr8n:
dc.b 'AB3D1:includes/bigbullet.ptr',0
even
wad9n:
dc.b 'AB3D1:includes/newgunsinhand.wad',0
even
ptr9n:
dc.b 'AB3D1:includes/newgunsinhand.ptr',0
even
wadan:
dc.b 'AB3D1:includes/newmarine.wad',0
even
ptran:
dc.b 'AB3D1:includes/newmarine.ptr',0
even
wadbn:
dc.b 'AB3D1:includes/lamps.wad',0
even
ptrbn:
dc.b 'AB3D1:includes/lamps.ptr',0
even
wadcn:
dc.b 'AB3D1:includes/worm.wad',0
even
ptrcn:
dc.b 'AB3D1:includes/worm.ptr',0
even
waddn:
dc.b 'AB3D1:includes/explosion.wad',0
even
ptrdn:
dc.b 'AB3D1:includes/explosion.ptr',0
even
waden:
dc.b 'AB3D1:includes/bigclaws.wad',0
even
ptren:
dc.b 'AB3D1:includes/bigclaws.ptr',0
even
wadfn:
dc.b 'AB3D1:includes/tree.wad',0
even
ptrfn:
dc.b 'AB3D1:includes/tree.ptr',0
even
wadgn:
dc.b 'AB3D1:includes/glare.wad',0
even
ptrgn:
dc.b 'AB3D1:includes/glare.ptr',0
even
OBJ_ADDRS: ds.l 160
blocklen: dc.l 0
blockname: dc.l 0
blockstart: dc.l 0
BOTPICNAME: dc.b 'AB3:includes/panelraw',0
even
PanelLen: dc.l 0
FREEBOTMEM:
move.l Panel,d1
move.l d1,a1
move.l PanelLen,d0
move.l 4.w,a6
jsr -210(a6)
rts
LOADBOTPIC:
PRSDb
move.l #BOTPICNAME,blockname
move.l doslib,a6
move.l blockname,d1
move.l #1005,d2
jsr -30(a6)
move.l d0,handle
lea fib,a5
move.l handle,d1
move.l a5,d2
jsr -390(a6)
move.l $7c(a5),blocklen
move.l #30720,PanelLen
move.l #2,d1
move.l 4.w,a6
move.l PanelLen,d0
jsr -198(a6)
move.l d0,blockstart
; move.l doslib,a6
; move.l blockname,d1
; move.l #1005,d2
; jsr -30(a6)
move.l doslib,a6
; move.l d0,handle
move.l handle,d1
move.l LEVELDATA,d2
move.l blocklen,d3
jsr -42(a6)
move.l doslib,a6
move.l handle,d1
jsr -36(a6)
move.l blockstart,Panel
move.l LEVELDATA,d0
moveq #0,d1
move.l Panel,a0
lea WorkSpace,a1
lea $0,a2
jsr unLHA
rts
LOADOBS:
PRSDG
move.l #OBJ_ADDRS,a2
move.l LINKFILE,a0
lea ObjectGfxNames(a0),a0
move.l #0,TYPEOFMEM
move.l #Objects,a1
LOADMOREOBS:
move.l a0,a4
move.l #OBJNAME,a3
fillinname:
move.b (a4)+,d0
beq.s donename
move.b d0,(a3)+
bra.s fillinname
donename:
move.l a0,-(a7)
move.l a3,DOTPTR
move.b #'.',(a3)+
move.b #'W',(a3)+
move.b #'A',(a3)+
move.b #'D',(a3)+
move.b #0,(a3)+
move.l #OBJNAME,a0
move.l a1,d0
moveq #0,d1
bsr QUEUEFILE
move.l DOTPTR,a3
move.b #'.',(a3)+
move.b #'P',(a3)+
move.b #'T',(a3)+
move.b #'R',(a3)+
move.b #0,(a3)+
move.l #OBJNAME,a0
move.l a1,d0
add.l #4,d0
moveq #0,d1
bsr QUEUEFILE
move.l DOTPTR,a3
move.b #'.',(a3)+
; move.b #'2',(a3)+
; move.b #'5',(a3)+
; move.b #'6',(a3)+
move.b #'P',(a3)+
move.b #'A',(a3)+
move.b #'L',(a3)+
move.b #0,(a3)+
move.l #OBJNAME,a0
move.l a1,d0
add.l #12,d0
moveq #0,d1
bsr QUEUEFILE
move.l (a7)+,a0
add.l #64,a0
add.l #16,a1
tst.b (a0)
bne LOADMOREOBS
move.l #POLYOBJECTS,a2
move.l LINKFILE,a0
add.l #VectorGfxNames,a0
LOADMOREVECTORS
tst.b (a0)
beq.s NOMOREVECTORS
move.l a2,d0
moveq #0,d1
jsr QUEUEFILE
addq #4,a2
adda.w #64,a0
bra.s LOADMOREVECTORS
NOMOREVECTORS:
rts
DOTPTR: dc.l 0
LOAD_A_PALETTE
movem.l d0-a7/a0-a6,-(a7)
move.l #OBJNAME,blockname
move.l doslib,a6
move.l blockname,d1
move.l #1005,d2
jsr -30(a6)
move.l d0,handle
move.l #2048,blocklen
move.l #1,d1
move.l 4.w,a6
move.l blocklen,d0
jsr -198(a6)
move.l d0,blockstart
; move.l doslib,a6
; move.l blockname,d1
; move.l #1005,d2
; jsr -30(a6)
move.l doslib,a6
; move.l d0,handle
move.l handle,d1
move.l blockstart,d2
move.l blocklen,d3
jsr -42(a6)
move.l doslib,a6
move.l handle,d1
jsr -36(a6)
movem.l (a7)+,d0-a7/a0-a6
move.l blockstart,(a2)+
move.l blocklen,(a2)+
rts
CNOP 0,4
fib: ds.l 75
LOAD_AN_OBJ:
movem.l a0/a1/a2/a3/a4,-(a7)
move.l #OBJNAME,blockname
move.l doslib,a6
move.l blockname,d1
move.l #1005,d2
jsr -30(a6)
move.l d0,handle
lea fib,a5
move.l handle,d1
move.l a5,d2
jsr -390(a6)
move.l $7c(a5),blocklen
move.l #1,d1
move.l 4.w,a6
move.l blocklen,d0
jsr -198(a6)
move.l d0,blockstart
; move.l doslib,a6
; move.l blockname,d1
; move.l #1005,d2
; jsr -30(a6)
move.l doslib,a6
; move.l d0,handle
move.l handle,d1
move.l blockstart,d2
move.l blocklen,d3
jsr -42(a6)
move.l doslib,a6
move.l handle,d1
jsr -36(a6)
movem.l (a7)+,a0/a1/a2/a3/a4
move.l blockstart,(a2)+
move.l blocklen,(a2)+
rts
RELEASEOBJMEM:
move.l #OBJ_NAMES,a0
move.l #OBJ_ADDRS,a2
relobjlop
move.l (a2)+,blockstart
move.l (a2)+,blocklen
addq #8,a0
tst.l blockstart
ble.s nomoreovj
movem.l a0/a2,-(a7)
move.l blockstart,d1
move.l d1,a1
move.l blocklen,d0
move.l 4.w,a6
jsr -210(a6)
movem.l (a7)+,a0/a2
bra.s relobjlop
nomoreovj:
rts
TYPEOFMEM: dc.l 0
LOAD_SFX:
move.l LINKFILE,a0
lea SFXFilenames(a0),a0
move.l #SampleList,a1
move.w #58,d7
LOADSAMPS:
tst.b (a0)
bne.s oktoload
add.w #64,a0
addq #8,a1
dbra d7,LOADSAMPS
move.l #-1,(a1)+
rts
oktoload:
move.l #MEMF_CHIP,TYPEOFMEM
move.l a1,d0
move.l d0,d1
add.l #4,d1
jsr QUEUEFILE
addq #8,a1
; move.l d0,(a1)+
; add.l d1,d0
; move.l d0,(a1)+
adda.w #64,a0
dbra d7,LOADSAMPS
rts
PATCHSFX:
move.w #58,d7
move.l #SampleList,a1
.patch
move.l (a1)+,d0
add.l d0,(a1)+
dbra d7,.patch
rts
; PRSDJ
;
; move.l #SFX_NAMES,a0
; move.l #SampleList,a1
;LOADSAMPS
; move.l (a0)+,a2
; move.l a2,d0
; tst.l d0
; bgt.s oktoload
; blt.s doneload
;
; addq #4,a0
; addq #8,a1
; bra LOADSAMPS
;
;doneload:
;
; move.l #-1,(a1)+
; rts
;oktoload:
; move.l (a0)+,blocklen
; move.l a2,blockname
; movem.l a0/a1,-(a7)
; move.l #2,d1
; move.l 4.w,a6
; move.l blocklen,d0
; jsr -198(a6)
; move.l d0,blockstart
; move.l doslib,a6
; move.l blockname,d1
; move.l #1005,d2
; jsr -30(a6)
; move.l doslib,a6
; move.l d0,handle
; move.l d0,d1
; move.l blockstart,d2
; move.l blocklen,d3
; jsr -42(a6)
; move.l doslib,a6
; move.l handle,d1
; jsr -36(a6)
; movem.l (a7)+,a0/a1
; move.l blockstart,d0
; move.l d0,(a1)+
; add.l blocklen,d0
; move.l d0,(a1)+
; bra LOADSAMPS
LOADFLOOR
; PRSDK
; move.l #65536,d0
; move.l #1,d1
; move.l 4.w,a6
; jsr -198(a6)
; move.l d0,floortile
;
; move.l #floortilename,d1
; move.l #1005,d2
; move.l doslib,a6
; jsr -30(a6)
; move.l doslib,a6
; move.l d0,handle
; move.l d0,d1
; move.l floortile,d2
; move.l #65536,d3
; jsr -42(a6)
; move.l doslib,a6
; move.l handle,d1
; jsr -36(a6)
move.l LINKFILE,a0
add.l #FloorTileFilename,a0
move.l #floortile,d0
move.l #0,d1
jsr QUEUEFILE
; move.l d0,floortile
move.l LINKFILE,a0
add.l #TextureFilename,a0
move.l #BUFFE,a1
.copy:
move.b (a0)+,(a1)+
beq.s .copied
bra.s .copy
.copied:
subq #1,a1
move.l a1,dotty
move.l #BUFFE,a0
move.l #TextureMaps,d0
move.l #0,d1
jsr QUEUEFILE
; move.l d0,TextureMaps
move.l dotty,a1
move.l #".pal",(a1)
move.l #BUFFE,a0
move.l #TexturePal,d0
move.l #0,d1
jsr QUEUEFILE
; move.l d0,TexturePal
rts
dotty: dc.l 0
BUFFE: ds.b 80
floortilename:
ifeq CHEESEY
dc.b 'AB3:includes/floortile'
endc
ifne CHEESEY
dc.b 'AB3:includes/SMALLfloortile'
endc
dc.b 0
even
RELEASESAMPMEM:
move.l #SampleList,a0
.relmem:
move.l (a0)+,d1
bge.s .okrel
rts
.okrel:
move.l (a0)+,d0
sub.l d1,d0
move.l d1,a1
move.l 4.w,a6
move.l a0,-(a7)
jsr -210(a6)
move.l (a7)+,a0
bra .relmem
RELEASELEVELMEM:
move.l LINKS,d1
move.l d1,a1
move.l #10000,d0
move.l 4.w,a6
jsr -210(a6)
move.l FLYLINKS,d1
move.l d1,a1
move.l #10000,d0
move.l 4.w,a6
jsr -210(a6)
move.l LEVELGRAPHICS,d1
move.l d1,a1
move.l #40000,d0
move.l 4.w,a6
jsr -210(a6)
move.l LEVELCLIPS,d1
move.l d1,a1
move.l #40000,d0
move.l 4.w,a6
jsr -210(a6)
rts
RELEASEFLOORMEM:
move.l floortile,d1
move.l d1,a1
move.l #65536,d0
move.l 4.w,a6
jsr -210(a6)
rts
COPSCRN1: dc.l 0
COPSCRN2: dc.l 0
RELEASESCRNMEM:
move.l COPSCRN1,d1
move.l d1,a1
move.l #(104*80*4)+16,d0
move.l 4.w,a6
jsr -210(a6)
move.l COPSCRN2,d1
move.l d1,a1
move.l #(104*80*4)+16,d0
move.l 4.w,a6
jsr -210(a6)
; move.l COPSCRNBUFF,d1
; move.l d1,a1
; move.l #(104*80*4)+16,d0
; move.l 4.w,a6
; jsr -210(a6)
rts
unLHA: incbin "ab3:Decomp4.raw"